﻿from LEder_0060_population import Population
import matplotlib
from pylab import *

class Lion(Population):
    '''
    Die Klasse Löwe ist eine reine Räuberpopulation, daher muss nur die
    Gebuertenrate verändert werden im Vergleich zur Populationsklasse.
    '''
    def birth(self,initialpop):
        return self.initialpop[len(self.initialpop)-1] * self.prey.initialpop[len(self.prey.initialpop)-1] * self.influ* self.birthrate * self.timestep

class Zebra(Population):
    '''
    Die Klasse Zebra ist eine Beutepopulation für Löwen und eine Räuber-
    population für die Nahrung. Daher müssen Geburten- und Todesmethode
    verändert werden und von der jeweils beeinflussenden Population determinert
    werden.
    '''
    def death(self,initialpop):
        return self.initialpop[len(self.initialpop)-1] * self.pred.initialpop[len(self.pred.initialpop)-1] * self.pred.influ * self.deathrate * self.timestep
    def birth(self,initialpop):
        return self.initialpop[len(self.initialpop)-1] / self.prey.initialpop[len(self.prey.initialpop)-1] / self.influ * self.birthrate * self.timestep

class Food(Population):
    '''
    Der Umfang der Nahrung wird von der Größe der Zebrapopulation negativ,
    also in der Todesmethode, beeinflusst. Die Geburtenmethode beeinhaltet
    eine Kapazitätsbegrenzung der Nahrung.
    '''
    def birth(self,initialpop):
        return (self.capacity - self.initialpop[len(self.initialpop)-1]) * self.birthrate 
    def death(self,initialpop):
        return self.initialpop[len(self.initialpop)-1] / self.pred.initialpop[len(self.pred.initialpop)-1] / self.pred.influ * self.deathrate * self.timestep

my_Lion = Lion(100,0.01,0.2,0,10,0.1,"Loewen",0,0.01)
my_Zebra = Zebra(100,0.2,0.1,0,10,0.1,"Zebras",0,0.05)
my_Essen = Food(20,0.2,0.3,0,10,0.1,"Nahrung",100)
my_Lion.setPrey(my_Zebra)
my_Zebra.setPred(my_Lion)
my_Zebra.setPrey(my_Essen)
my_Essen.setPred(my_Zebra)
my_Essen.getPop()
my_Zebra.getPop()
my_Lion.getPop()
my_Zebra.plotPop()    
#my_Lion.plotPop()
'''
Initialisiert drei Instanzen der Klasse Population und verknüpft sie durch durch
die setPred- und setPrey-Methoden
'''
    

    
        
